﻿var Customer = {
    version: '1.0.0.0.0',
    PageIndex: 1,
    PageSize: 20,
    CurrentPageIndex: 0,
    Active: 1,
    Denied: 0,

    Init: function () {
        $('form').jqTransform();
        Customer.ListSearch(Customer.PageIndex);

        $("#txtKeyword").keypress(function (event) {
            if (event.which == 13) {
                Customer.ListSearch(Customer.PageIndex);
                event.preventDefault();
            }
        });
    },

    IsChecked: function (customerId, contactName, totalMoney) {
        $('#hfCustomerId').val(customerId);

        var html = '';
        html += '<div class="nNote nSuccess hideit">';
        html += String.format('<p><strong>Thông tin khách hàng: {0} - Tổng tiền: {1}</strong></p>', contactName, totalMoney);
        html += '</div>';

        $('#infoCustomer').html(html);
    },

    CreateBuySell: function () {
        $('#hfCustomerId').val(0);
        jConfirm(Customer.Form('', '', ''), 'Khách hàng mới', function (r) {
            if (r)
                Customer.SaveBuySell();
        });
    },

    SaveBuySell: function () {
        var contactName = $('#txtContactName').val();
        var mobile = $('#txtMobile').val();
        var email = $('#txtEmail').val();
        var address = $('#txtAddress').val();
        var desc = $('#txtDescription').val();
        var customerId = $('#hfCustomerId').val();
        var storeId = $('#hfStoreId').val();

        if (storeId > 0) {
            var url = String.format('/GetRequest.ashx?m=customer&action=save&name={0}&mobile={1}&email={2}&address={3}&desc={4}&storeId={5}&customerId={6}',
                                            contactName, mobile, email, address, desc, storeId, customerId);
            $.ajax({
                type: "POST",
                url: url,
                contentType: "application/json; charset=utf-8",
                dataType: "json"
            }).done(function (res) {
                if (res.Success) {
                    var iCustomerId = res.Data;
                    alert('iCustomerId: ' + iCustomerId);
                    
                    if (iCustomerId > 0) {
                        $.jGrowl('Tạo mới khách hàng thành công!', { header: 'Thông báo:' });

                        Customer.IsChecked(iCustomerId, contactName, '-');
                        Customer.ListSearchBuySell(Customer.PageIndex);
                    }
                }
                else {                    
                    $.jGrowl('Số điện thoại này đã tồn tại trong hệ thống!', { header: 'Thông báo:' });
                }
            });
        }
        else {
            $.jGrowl(String.format('Tài khoản Administrator không sửa thông tin khách hàng!'), { header: 'Thông báo:' });
        }
    },

    ListSearchBuySell: function (pageIndex) {
        Customer.CurrentPageIndex = pageIndex;

        var keyword = $('#txtKeyword').val();
        var storeId = $('#hfStoreId').val();
        var isExtractly = $('.jqTransformCheckboxWrapper').find('a').hasClass('jqTransformChecked');
        var isAdministrator = $('#hfIsAdministrator').val();

        var url = String.format('/GetRequest.ashx?m=customer&action=searchbuyandsell&keyword={0}&storeId={1}&isExtractly={2}&isAdministrator={3}&pi={4}&&rand={5}',
                                        keyword, storeId, isExtractly, isAdministrator, pageIndex, Math.random());
        $.getJSON(url, function (res) {
            if (res != null) {
                $('.pages').html(res.Pager);

                $.Mustache.load('/templates/customer/listbuysell.htm')
                    .done(function () {
                        $('#listCustomer tbody').html('');
                        $('#listCustomer tbody').mustache('tpl-customer-buy-sell-list', res);
                        $('.topDir').tipsy({ fade: true, gravity: 's' });
                    });
            }
        });
    },

    ListSearch: function (pageIndex) {
        Customer.CurrentPageIndex = pageIndex;

        $('#toTop').click();

        var keyword = $('#txtKeyword').val();
        var status;
        $.each($('#ddlStatus ul li a'), function () {
            if ($(this).attr('class') == 'selected') {
                var index = $(this).attr('index');
                var value = $('#ddlStatus select.jqTransformHidden option:eq(' + index + ')').attr('value');
                status = value;
            }
        });

        var orderBy;
        $.each($('#ddlOrderBy ul li a'), function () {
            if ($(this).attr('class') == 'selected') {
                var index = $(this).attr('index');
                var value = $('#ddlOrderBy select.jqTransformHidden option:eq(' + index + ')').attr('value');
                orderBy = value;
            }
        });

        var pageSize = Customer.PageSize;
        $.each($('#ddlPageSize ul li a'), function () {
            if ($(this).attr('class') == 'selected') {
                var index = $(this).attr('index');
                var value = $('#ddlPageSize select.jqTransformHidden option:eq(' + index + ')').attr('value');
                pageSize = value;
            }
        });

        var url = String.format('/GetRequest.ashx?m=customer&action=search&keyword={0}&status={1}&orderBy={2}&pi={3}&ps={4}&rand={5}',
                                        keyword, status, orderBy, pageIndex, pageSize, Math.random());
        $.getJSON(url, function (res) {
            if (res != null) {
                $('.pages').html(res.Pager);

                $.Mustache.load('/templates/customer/list.htm')
                    .done(function () {
                        $('#listCustomer tbody').html('');
                        $('#listCustomer tbody').mustache('tpl-customer-list', res);
                        $('.topDir').tipsy({ fade: true, gravity: 's' });
                        $('form').jqTransform();
                    });
            }
        });
    },

    Form: function (contactName, mobile, email, address, description) {
        var html = '';

        html += '<div class="rowElem noborder">';
        html += '<label>Họ tên:</label>';
        html += String.format('<div class="formRight" style="margin-top: 0"><input id="txtContactName" value="{0}" type="text" /></div>', contactName);
        html += '</div>';

        html += '<div class="rowElem noborder">';
        html += '<label>Điện thoại:</label>';
        html += String.format('<div class="formRight" style="margin-top: 0"><input id="txtMobile" value="{0}" type="text" /></div>', mobile);
        html += '</div>';

        html += '<div class="rowElem noborder">';
        html += '<label>Hòm thư:</label>';
        html += String.format('<div class="formRight" style="margin-top: 0"><input id="txtEmail" value="{0}" type="text" /></div>', email);
        html += '</div>';

        html += '<div class="rowElem noborder">';
        html += '<label>Địa chỉ:</label>';
        html += String.format('<div class="formRight" style="margin-top: 0"><textarea id="txtAddress" name="textarea" cols="60" rows="2">{0}</textarea></div>', address == undefined ? '' : address);
        html += '</div>';

        html += '<div class="rowElem noborder">';
        html += '<label>Ghi chú:</label>';
        html += String.format('<div class="formRight" style="margin-top: 0"><textarea id="txtDescription" name="textarea" cols="60" rows="3">{0}</textarea></div>', description == undefined ? '' : description);
        html += '</div>';

        html += '<div class="fix"></div>';
        html += '</div>';

        return html;
    },

    GetCustomer: function (id) {
        $('#hfCustomerId').val(id);
        $('#listCustomer table tr').removeClass('gradeC');
        $('.c-' + id).addClass('gradeC');

        var url = String.format('/GetRequest.ashx?m=customer&action=getcustomer&customerId={0}', id);
        $.getJSON(url, function (res) {
            if (res != null) {
                jConfirm(Customer.Form(res.Data.ContactName, res.Data.Mobile, res.Data.Email, res.Data.Address, res.Data.Description), 'Sửa thông tin khách hàng', function (r) {
                    if (r)
                        Customer.Save();
                });
            }
        });
    },

    Create: function () {
        $('#hfCustomerId').val(0);
        jConfirm(Customer.Form('', '', ''), 'Khách hàng mới', function (r) {
            if (r)
                Customer.Save();
        });
    },

    Save: function () {
        var contactName = $('#txtContactName').val();
        var mobile = $('#txtMobile').val();
        var email = $('#txtEmail').val();
        var address = $('#txtAddress').val();
        var desc = $('#txtDescription').val();
        var customerId = $('#hfCustomerId').val();
        var storeId = $('#hfStoreId').val();

        if (storeId > 0) {
            var url = String.format('/GetRequest.ashx?m=customer&action=save&name={0}&mobile={1}&email={2}&address={3}&desc={4}&storeId={5}&customerId={6}',
                                            contactName, mobile, email, address, desc, storeId, customerId);
            $.post(url, function () { })
                .done(function () {
                    if (customerId > 0) {
                        $.jGrowl(String.format('Sửa thông tin khách hàng thành công!'), { header: 'Thông báo:' });
                        Customer.ListSearch(Customer.CurrentPageIndex);
                    }
                    else {
                        $.jGrowl(String.format('Tạo mới khách hàng thành công!'), { header: 'Thông báo:' });
                        Customer.ListSearch(Customer.PageIndex);
                    }
                });
        }
        else {
            $.jGrowl(String.format('Tài khoản Administrator không sửa thông tin khách hàng!'), { header: 'Thông báo:' });
        }
    },

    ChangeStatus: function (status) {
        var count = 0;
        $.each($('#grdList tbody tr'), function () {
            var isSelected = $(this).find('td:eq(0) a');
            if ($(isSelected).hasClass('jqTransformChecked') == true) {
                count++;
                var customerId = ($(this).find('td:eq(0) input').attr('value'));

                var url = String.format('/GetRequest.ashx?m=customer&action=changestatus&customerId={0}&status={1}', customerId, status);
                $.post(url, function () { })
                    .done(function () {
                        Customer.ListSearch(Customer.PageIndex);
                    });
            }
        });

        if (count == 0)
            $.jGrowl(String.format('Bạn cần chọn khách hàng để cập nhật  trạng thái.'), { header: 'Cảnh báo:' });
        else
            $.jGrowl(String.format('Cập nhật trạng thái khách hàng <br/> thành công!'), { header: 'Thông báo:' });
    },

    Delete: function (id) {
        $('#listCustomer table tr').removeClass('gradeC');
        $('#c-' + id).addClass('gradeC');

        jConfirm('', 'Bạn có chắc chắn muốn xóa?', function (result) {
            if (result) {
                var url = String.format('/GetRequest.ashx?m=customer&action=delete&customerId={0}', id);
                $.post(url, function () { })
                    .done(function () {
                        $.jGrowl(String.format('Xóa khách hàng thành công!'), { header: 'Thông báo:' });
                    });

                Customer.ListSearch(Customer.CurrentPageIndex);
            }
        });
    }
};